package com.tulele.vtool.wechat.token.task;

import com.tulele.vtool.wechat.token.server.AccessTokenMemServer;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 定时任务：每隔一个半小时获取一次 AccessToken
 */
@Component
@EnableScheduling
public class AccessTokenTask {
    /**
     * 每隔一个半小时刷新 AccessToken
     * 从 00:00 开始，每隔 3 个小时执行一次
     *
     * 00:00    01:30
     * 03:00    04:30
     * 06:00    07:30
     * 09:00    10:30
     * 12:00    13:30
     * 15:00    16:30
     * 18:00    19:30
     * 21:00    22:30
     */
    @Scheduled(cron = "0 0 0-23/3 * * ?")
    private void refreshAccessToken1() {
        refreshAccessToken();
    }

    /**
     * 每隔一个半小时刷新 AccessToken
     * 从 01:30 开始，每隔 3 个小时执行一次
     *
     * 00:00    01:30
     * 03:00    04:30
     * 06:00    07:30
     * 09:00    10:30
     * 12:00    13:30
     * 15:00    16:30
     * 18:00    19:30
     * 21:00    22:30
     */
    @Scheduled(cron = "0 30 1-23/3 * * ?")
    private void refreshAccessToken2() {
        refreshAccessToken();
    }

    private void refreshAccessToken() {
        AccessTokenMemServer.refreshAll();

    }
}
